package dicionario;

import java.util.*;
import java.util.ArrayList;
import parser.Dicionario;

/**
 *
 * @author uel
 */
public class AnalisadorNomes {
    static private final String newline = "\n";
    Dicionario dicionario;
    ArrayList arrayListPalavras = new ArrayList();
    int nomesCorretos;
    int nomesIncorretos;

    public AnalisadorNomes() {
//        System.out.println(System.getProperty("user.dir"));
        dicionario = new Dicionario("dicionario.txt");
        System.out.println("Tamanho do dicionario.:" + dicionario.size());
        nomesCorretos = 0;
        nomesIncorretos = 0;
    }

    /**
     *
     */
    public ArrayList AnalisarNomesCorretos(ArrayList list){
        arrayListPalavras = list;
        ArrayList arrayListAux = new ArrayList();
        StringTokenizer tokenizer;
        boolean isCorreto = true;

        if (arrayListPalavras.isEmpty()) {
            System.out.println("> LISTA DE POSSIVEIS NOMES VAZIA. " + newline);
            return null;
        } else {
            System.out.println("> LISTA DE NOMES CARREGADA. " + newline);
            for (Iterator it = arrayListPalavras.iterator(); it.hasNext();) {
                Object object = it.next();
                tokenizer = new StringTokenizer(object.toString());

                while ((tokenizer.hasMoreTokens())&&(isCorreto == true)){
                    if(dicionario.contains(tokenizer.nextToken())){
                        isCorreto = false;
                    }else{
                        isCorreto = true;
                    }
                }

                if(isCorreto){
                    arrayListAux.add(object);
                    nomesCorretos++;
                }else{
                    nomesIncorretos++;
                    isCorreto = true;
                }

                //System.out.println(object.toString());
            }

            return arrayListAux;
        }
    }

    /**
     * Retorna o número de nomes corretos.
     * @return
     */
    public int getNomesCorretos() {
        return nomesCorretos;
    }

    /**
     *
     * @param nomesCorretos
     */
    public void setNomesCorretos(int nomesCorretos) {
        this.nomesCorretos = nomesCorretos;
    }

    public int getNomesIncorretos() {
        return nomesIncorretos;
    }

    public void setNomesIncorretos(int nomesIncorretos) {
        this.nomesIncorretos = nomesIncorretos;
    }

}
